#include<stdio.h>
#include<string.h>

int my_strstr(char* haystack,char* needle)
{
	int n=strlen(haystack),m=strlen(needle),i=0,j=0;
	int kmp[n];
	kmp[0]=0;
	for(i=0;i<m;i++)
	{
		j=kmp[i-1];
		while(needle[i]!=needle[j]&&j>0)
			j=kmp[j-1];
		if(needle[i]==needle[j])
			j++;
		kmp[i]=j;
	}
	j=0;
	for(i=0;i<n;i++)
	{
		while(needle[j]!=haystack[i]&&j>0)
			j=kmp[j-1];
		if(needle[j]==haystack[i])
			j++;
		if(j==m)
			return i-m+1;
	}
	return 0;
}

int main()
{
	char arr1[100]="abcdefg";
	char arr2[100]="bcd";
	int str=my_strstr(arr1,arr2);
	if(str>=0)
		printf("%s",arr1+str);
	return 0;
}
